/* 
* 2023年11月23日14:31:04
* by Liz
*/
import { string2Boolean, formatDate } from "./tools";
/* 提供统一处理的方法 */
export const factory = {
    dateFormatter2YMD(str) {
      return str ? formatDate(str, 'YYYY-MM-DD') : '';
    },
    dateFormatter2YMDH(str) {
      return str ? formatDate(str, 'YYYY-MM-DD HH') : "";
    },
    dateFormatter2YMDHM(str) {
      return str ? formatDate(str, 'YYYY-MM-DD HH:mm') : "";
    },
    dateFormatter2YMDHMS(str) {
      return str ? formatDate(str, 'YYYY-MM-DD HH:mm:ss') : "";
    },
    formatDate, // 格式化日期
    /* 根据逻辑表达式进行依赖验证 */
    validateByEval(logic, obj = {}) {
      /* 传'',undefined,null,0,空数组都返回true */
        if ((!logic || !obj) && logic !== false) {
          return true;
        }
        try {
          const evaluate = new Function("obj", `return ${logic}`);
          return evaluate(obj);
        } catch (error) {
          console.error("validation logic Error:", `配置逻辑：${logic}错误原因：${error}；请确保上下文数据完整性！`);
          return false;
        }
    },
    /* 修正参数对象 */
    correctParams(params) {
        if (!params) return {};
        const newParams = {};
        for (const key in params) {
          if (params[key] === 'true' || params[key] === 'false') {
            // 把 'true' 'false' 转换成 true false
            newParams[key] = string2Boolean(params[key]);
          } else {
            newParams[key] = params[key];
          }
        }
        return newParams;
    },
}